Linear regression using Batch Gradient Descent

Building linear regression from ground up


In [3]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

Our Linear Regression Model

This python class contains our Linear Regression model/algo. We use the OOP's concepts to impart the model's behaviour to a python class. This class contains methods to train, predict and plot the cost curve.


In [58]:
class linear_regression():
       
    def __init__(self):
        self.weights = None
        self.learning_rate = None
        self.epochs = None
        self.trainx = None
        self.trainy = None
        self.costcurve = []
        print('Status: Model Initialized')
    
    def train(self, trainx, trainy, learning_rate, epochs):
        # np.random.seed(10)
        self.trainx = trainx
        self.trainy = trainy
        self.learning_rate = learning_rate
        self.epochs = epochs
        
        # self.weights = np.random.randn(self.trainx.shape[1]+1)
        self.weights = np.random.uniform(low=0.0, high=inputx.shape[1]**0.5, size=inputx.shape[1]+1)
        self.trainx = np.append(self.trainx,np.ones((self.trainx.shape[0],1)), axis=1)
        
        for epoch in range(epochs):
            output = np.dot(self.trainx, self.weights)
            output = np.reshape(output, (output.shape[0],1))
            error = np.subtract(self.trainy, output)
            total_error = np.sum(error)
            cost = np.mean(error**2)
            self.costcurve.append([epoch+1, cost])
            gradients = (self.learning_rate / self.trainx.shape[0]) * np.dot(error.T, self.trainx)
            gradients = np.reshape(gradients, (gradients.T.shape[0],))
            self.weights += gradients
            print('step:{0} \n cost:{1}'.format(epoch+1, cost))
            
        # return self.weights
    
    def plotCostCurve(self):
        costcurvearray = np.array(self.costcurve)
        plt.plot(costcurvearray[:,0],costcurvearray[:,1])
        plt.xlabel('Epochs')
        plt.ylabel('Cost')
        plt.show()
    
    def predict(self, validatex):
        validatex_new = np.append(validatex,np.ones((validatex.shape[0],1)), axis=1)
        predict = np.dot(validatex_new, self.weights)
        return np.reshape(predict, (predict.shape[0],1))

Ingesting Sample Data

We are using the MPG dataset from UCI Datasets to test our implementation. http://archive.ics.uci.edu/ml/datasets/Auto+MPG


In [76]:
mpg_data = np.genfromtxt('mpg.txt', delimiter=',', dtype='float')
print(mpg_data.shape)

mpg_data = mpg_data[~np.isnan(mpg_data).any(axis=1)]

inputx = mpg_data[:,1:8]

for i in range(inputx.shape[1]):
    inputx[:,i] = (inputx[:,i]-np.min(inputx[:,i]))/(np.max(inputx[:,i])-np.min(inputx[:,i]))

inputy = np.reshape(mpg_data[:,0],(mpg_data.shape[0],1))


(398, 7)

In [81]:
model = linear_regression()
model.train(inputx, inputy, 0.01, 1000)


Status: Model Initialized
step:1 
 cost:476.80235624968043
step:2 
 cost:462.02382726634
step:3 
 cost:447.84191653688225
step:4 
 cost:434.2317708010911
step:5 
 cost:421.1695761819693
step:6 
 cost:408.6325146967019
step:7 
 cost:396.59872258736124
step:8 
 cost:385.0472503952124
step:9 
 cost:373.9580247056552
step:10 
 cost:363.31181149389977
step:11 
 cost:353.09018100439425
step:12 
 cost:343.27547409982367
step:13 
 cost:333.8507700181915
step:14 
 cost:324.79985547905926
step:15 
 cost:316.10719508249406
step:16 
 cost:307.75790294662954
step:17 
 cost:299.7377155320123
step:18 
 cost:292.03296560307456
step:19 
 cost:284.6305572791494
step:20 
 cost:277.5179421294405
step:21 
 cost:270.6830962682599
step:22 
 cost:264.1144984086815
step:23 
 cost:257.8011088345045
step:24 
 cost:251.73234925210056
step:25 
 cost:245.89808348533032
step:26 
 cost:240.28859897824657
step:27 
 cost:234.89458907178744
step:28 
 cost:229.7071360220712
step:29 
 cost:224.71769472926024
step:30 
 cost:219.91807714726278
step:31 
 cost:215.3004373457824
step:32 
 cost:210.85725719741848
step:33 
 cost:206.5813326636637
step:34 
 cost:202.46576065473747
step:35 
 cost:198.50392643924457
step:36 
 cost:194.68949158065115
step:37 
 cost:191.01638237853516
step:38 
 cost:187.47877879348817
step:39 
 cost:184.071103835432
step:40 
 cost:180.78801339595796
step:41 
 cost:177.6243865061097
step:42 
 cost:174.575316001807
step:43 
 cost:171.63609957985386
step:44 
 cost:168.8022312281865
step:45 
 cost:166.0693930147024
step:46 
 cost:163.43344721966477
step:47 
 cost:160.89042879730795
step:48 
 cost:158.4365381528663
step:49 
 cost:156.06813422182972
step:50 
 cost:153.7817278387789
step:51 
 cost:151.57397538368312
step:52 
 cost:149.44167269405065
step:53 
 cost:147.38174923180716
step:54 
 cost:145.39126249424393
step:55 
 cost:143.46739265882235
step:56 
 cost:141.6074374520498
step:57 
 cost:139.80880723305066
step:58 
 cost:138.06902028284864
step:59 
 cost:136.38569829075328
step:60 
 cost:134.75656202960235
step:61 
 cost:133.1794272119581
step:62 
 cost:131.65220051968552
step:63 
 cost:130.17287579965736
step:64 
 cost:128.73953041863535
step:65 
 cost:127.35032177066599
step:66 
 cost:126.00348393061002
step:67 
 cost:124.69732444769033
step:68 
 cost:123.43022127319975
step:69 
 cost:122.20061981675462
step:70 
 cost:121.00703012571552
step:71 
 cost:119.8480241826217
step:72 
 cost:118.7222333157002
step:73 
 cost:117.6283457177193
step:74 
 cost:116.56510406865216
step:75 
 cost:115.5313032578068
step:76 
 cost:114.52578820126068
step:77 
 cost:113.54745175061205
step:78 
 cost:112.5952326892267
step:79 
 cost:111.66811381231933
step:80 
 cost:110.76512008736141
step:81 
 cost:109.88531689145462
step:82 
 cost:109.0278083224491
step:83 
 cost:108.191735580721
step:84 
 cost:107.3762754186526
step:85 
 cost:106.58063865498208
step:86 
 cost:105.80406875130872
step:87 
 cost:105.04584044815257
step:88 
 cost:104.30525845807679
step:89 
 cost:103.5816562134849
step:90 
 cost:102.87439466680512
step:91 
 cost:102.18286114086999
step:92 
 cost:101.50646822739053
step:93 
 cost:100.84465273151311
step:94 
 cost:100.19687466053021
step:95 
 cost:99.5626162548977
step:96 
 cost:98.94138105978895
step:97 
 cost:98.3326930354886
step:98 
 cost:97.73609570500189
step:99 
 cost:97.15115133732127
step:100 
 cost:96.57744016485954
step:101 
 cost:96.01455963361859
step:102 
 cost:95.46212368472506
step:103 
 cost:94.91976206601983
step:104 
 cost:94.38711967244406
step:105 
 cost:93.86385591401675
step:106 
 cost:93.34964411024956
step:107 
 cost:92.84417090989226
step:108 
 cost:92.34713573494943
step:109 
 cost:91.85825024795244
step:110 
 cost:91.37723784151396
step:111 
 cost:90.90383314923227
step:112 
 cost:90.43778157705275
step:113 
 cost:89.9788388542296
step:114 
 cost:89.52677060306864
step:115 
 cost:89.08135192666477
step:116 
 cost:88.64236701388134
step:117 
 cost:88.20960876084997
step:118 
 cost:87.78287840829981
step:119 
 cost:87.36198519405339
step:120 
 cost:86.94674602005512
step:121 
 cost:86.53698513332391
step:122 
 cost:86.13253382024743
step:123 
 cost:85.73323011365994
step:124 
 cost:85.33891851216863
step:125 
 cost:84.94944971121602
step:126 
 cost:84.56468034538749
step:127 
 cost:84.18447274149337
step:128 
 cost:83.80869468197469
step:129 
 cost:83.43721917820082
step:130 
 cost:83.06992425324503
step:131 
 cost:82.70669273374135
step:132 
 cost:82.34741205044295
step:133 
 cost:81.9919740471179
step:134 
 cost:81.64027479743335
step:135 
 cost:81.29221442949408
step:136 
 cost:80.94769695771507
step:137 
 cost:80.60663012172142
step:138 
 cost:80.2689252319812
step:139 
 cost:79.9344970218902
step:140 
 cost:79.60326350603773
step:141 
 cost:79.27514584439595
step:142 
 cost:78.950068212184
step:143 
 cost:78.6279576751699
step:144 
 cost:78.3087440701828
step:145 
 cost:77.99235989061742
step:146 
 cost:77.6787401767219
step:147 
 cost:77.3678224104689
step:148 
 cost:77.05954641481829
step:149 
 cost:76.75385425718754
step:150 
 cost:76.45069015695414
step:151 
 cost:76.15000039682079
step:152 
 cost:75.85173323788243
step:153 
 cost:75.55583883823967
step:154 
 cost:75.26226917501069
step:155 
 cost:74.97097796959906
step:156 
 cost:74.68192061608175
step:157 
 cost:74.39505411258635
step:158 
 cost:74.11033699553258
step:159 
 cost:73.82772927661857
step:160 
 cost:73.54719238243668
step:161 
 cost:73.26868909660905
step:162 
 cost:72.9921835043376
step:163 
 cost:72.71764093926721
step:164 
 cost:72.4450279325656
step:165 
 cost:72.17431216412693
step:166 
 cost:71.90546241581059
step:167 
 cost:71.6384485266298
step:168 
 cost:71.37324134980851
step:169 
 cost:71.10981271162855
step:170 
 cost:70.84813537199219
step:171 
 cost:70.58818298662811
step:172 
 cost:70.32993007087245
step:173 
 cost:70.07335196495856
step:174 
 cost:69.81842480075287
step:175 
 cost:69.56512546987602
step:176 
 cost:69.31343159315158
step:177 
 cost:69.06332149132653
step:178 
 cost:68.81477415701082
step:179 
 cost:68.56776922778434
step:180 
 cost:68.32228696042323
step:181 
 cost:68.07830820619812
step:182 
 cost:67.83581438719982
step:183 
 cost:67.59478747364942
step:184 
 cost:67.35520996215148
step:185 
 cost:67.11706485485126
step:186 
 cost:66.88033563945778
step:187 
 cost:66.64500627009669
step:188 
 cost:66.41106114895828
step:189 
 cost:66.1784851087075
step:190 
 cost:65.94726339562375
step:191 
 cost:65.7173816534404
step:192 
 cost:65.48882590785445
step:193 
 cost:65.26158255167856
step:194 
 cost:65.03563833060834
step:195 
 cost:64.81098032957948
step:196 
 cost:64.58759595968978
step:197 
 cost:64.36547294566279
step:198 
 cost:64.1445993138301
step:199 
 cost:63.92496338061088
step:200 
 cost:63.706553741467594
step:201 
 cost:63.4893592603184
step:202 
 cost:63.27336905938675
step:203 
 cost:63.058572509470224
step:204 
 cost:62.84495922061084
step:205 
 cost:62.63251903315034
step:206 
 cost:62.42124200915402
step:207 
 cost:62.21111842418822
step:208 
 cost:62.00213875943606
step:209 
 cost:61.794293694137885
step:210 
 cost:61.587574098342515
step:211 
 cost:61.381971025956375
step:212 
 cost:61.17747570807826
step:213 
 cost:60.97407954660751
step:214 
 cost:60.77177410811441
step:215 
 cost:60.570551117961784
step:216 
 cost:60.37040245466735
step:217 
 cost:60.17132014449666
step:218 
 cost:59.973296356277174
step:219 
 cost:59.77632339642416
step:220 
 cost:59.58039370416948
step:221 
 cost:59.38549984698509
step:222 
 cost:59.19163451619282
step:223 
 cost:58.9987905227527
step:224 
 cost:58.80696079322275
step:225 
 cost:58.61613836588257
step:226 
 cost:58.42631638701427
step:227 
 cost:58.23748810733404
step:228 
 cost:58.049646878568026
step:229 
 cost:57.86278615016674
step:230 
 cost:57.67689946615183
step:231 
 cost:57.49198046209027
step:232 
 cost:57.308022862189894
step:233 
 cost:57.12502047651209
step:234 
 cost:56.942967198296024
step:235 
 cost:56.761857001390275
step:236 
 cost:56.58168393778703
step:237 
 cost:56.40244213525491
step:238 
 cost:56.224125795066094
step:239 
 cost:56.04672918981384
step:240 
 cost:55.87024666131677
step:241 
 cost:55.69467261860621
step:242 
 cost:55.520001535993174
step:243 
 cost:55.346227951211574
step:244 
 cost:55.17334646363476
step:245 
 cost:55.00135173256199
step:246 
 cost:54.83023847557224
step:247 
 cost:54.66000146694235
step:248 
 cost:54.490635536126916
step:249 
 cost:54.32213556629741
step:250 
 cost:54.15449649293803
step:251 
 cost:53.987713302495855
step:252 
 cost:53.82178103108316
step:253 
 cost:53.65669476322977
step:254 
 cost:53.49244963068319
step:255 
 cost:53.32904081125477
step:256 
 cost:53.16646352770974
step:257 
 cost:53.004713046699635
step:258 
 cost:52.843784677735016
step:259 
 cost:52.68367377219704
step:260 
 cost:52.52437572238616
step:261 
 cost:52.3658859606066
step:262 
 cost:52.20819995828485
step:263 
 cost:52.051313225121
step:264 
 cost:51.89522130827156
step:265 
 cost:51.739919791562286
step:266 
 cost:51.585404294729955
step:267 
 cost:51.431670472691806
step:268 
 cost:51.27871401484168
step:269 
 cost:51.126530644371336
step:270 
 cost:50.97511611761655
step:271 
 cost:50.82446622342632
step:272 
 cost:50.67457678255475
step:273 
 cost:50.525443647074404
step:274 
 cost:50.37706269981029
step:275 
 cost:50.229429853793704
step:276 
 cost:50.08254105173507
step:277 
 cost:49.936392265515046
step:278 
 cost:49.79097949569307
step:279 
 cost:49.64629877103267
step:280 
 cost:49.502346148042975
step:281 
 cost:49.35911771053558
step:282 
 cost:49.2166095691962
step:283 
 cost:49.074817861170665
step:284 
 cost:48.93373874966439
step:285 
 cost:48.793368423555066
step:286 
 cost:48.65370309701787
step:287 
 cost:48.51473900916268
step:288 
 cost:48.376472423682934
step:289 
 cost:48.23889962851553
step:290 
 cost:48.102016935511415
step:291 
 cost:47.9658206801164
step:292 
 cost:47.830307221061744
step:293 
 cost:47.695472940064256
step:294 
 cost:47.5613142415354
step:295 
 cost:47.42782755229904
step:296 
 cost:47.295009321317615
step:297 
 cost:47.16285601942628
step:298 
 cost:47.03136413907477
step:299 
 cost:46.90053019407658
step:300 
 cost:46.770350719365396
step:301 
 cost:46.64082227075815
step:302 
 cost:46.511941424724824
step:303 
 cost:46.38370477816437
step:304 
 cost:46.25610894818686
step:305 
 cost:46.12915057190128
step:306 
 cost:46.00282630620899
step:307 
 cost:45.8771328276026
step:308 
 cost:45.75206683196994
step:309 
 cost:45.62762503440303
step:310 
 cost:45.50380416901175
step:311 
 cost:45.38060098874223
step:312 
 cost:45.25801226519953
step:313 
 cost:45.13603478847471
step:314 
 cost:45.01466536697574
step:315 
 cost:44.89390082726267
step:316 
 cost:44.77373801388627
step:317 
 cost:44.65417378923055
step:318 
 cost:44.53520503335861
step:319 
 cost:44.416828643861976
step:320 
 cost:44.299041535713144
step:321 
 cost:44.181840641121255
step:322 
 cost:44.06522290939075
step:323 
 cost:43.949185306783015
step:324 
 cost:43.83372481638071
step:325 
 cost:43.718838437954915
step:326 
 cost:43.60452318783476
step:327 
 cost:43.49077609877962
step:328 
 cost:43.377594219853755
step:329 
 cost:43.264974616303185
step:330 
 cost:43.152914369434924
step:331 
 cost:43.04141057649825
step:332 
 cost:42.93046035056826
step:333 
 cost:42.82006082043122
step:334 
 cost:42.710209130471995
step:335 
 cost:42.60090244056343
step:336 
 cost:42.49213792595735
step:337 
 cost:42.38391277717747
step:338 
 cost:42.27622419991399
step:339 
 cost:42.169069414919775
step:340 
 cost:42.06244565790818
step:341 
 cost:41.95635017945232
step:342 
 cost:41.850780244885975
step:343 
 cost:41.74573313420581
step:344 
 cost:41.641206141974976
step:345 
 cost:41.5371965772282
step:346 
 cost:41.43370176337801
step:347 
 cost:41.33071903812232
step:348 
 cost:41.228245753353235
step:349 
 cost:41.12627927506702
step:350 
 cost:41.024816983275215
step:351 
 cost:40.92385627191689
step:352 
 cost:40.823394548772
step:353 
 cost:40.72342923537569
step:354 
 cost:40.6239577669338
step:355 
 cost:40.52497759223917
step:356 
 cost:40.42648617358904
step:357 
 cost:40.32848098670334
step:358 
 cost:40.2309595206439
step:359 
 cost:40.133919277734485
step:360 
 cost:40.037357773481816
step:361 
 cost:39.941272536497316
step:362 
 cost:39.84566110841973
step:363 
 cost:39.7505210438385
step:364 
 cost:39.65584991021796
step:365 
 cost:39.561645287822216
step:366 
 cost:39.467904769640896
step:367 
 cost:39.37462596131542
step:368 
 cost:39.28180648106614
step:369 
 cost:39.189443959620085
step:370 
 cost:39.097536040139396
step:371 
 cost:39.00608037815032
step:372 
 cost:38.91507464147307
step:373 
 cost:38.824516510151994
step:374 
 cost:38.73440367638663
step:375 
 cost:38.64473384446318
step:376 
 cost:38.55550473068664
step:377 
 cost:38.466714063313454
step:378 
 cost:38.378359582484784
step:379 
 cost:38.290439040160265
step:380 
 cost:38.20295020005235
step:381 
 cost:38.11589083756108
step:382 
 cost:38.029258739709526
step:383 
 cost:37.94305170507957
step:384 
 cost:37.85726754374824
step:385 
 cost:37.77190407722463
step:386 
 cost:37.6869591383871
step:387 
 cost:37.60243057142109
step:388 
 cost:37.51831623175736
step:389 
 cost:37.43461398601063
step:390 
 cost:37.351321711918736
step:391 
 cost:37.26843729828217
step:392 
 cost:37.185958644904034
step:393 
 cost:37.1038836625305
step:394 
 cost:37.022210272791554
step:395 
 cost:36.940936408142264
step:396 
 cost:36.860060011804435
step:397 
 cost:36.77957903770852
step:398 
 cost:36.69949145043616
step:399 
 cost:36.61979522516285
step:400 
 cost:36.54048834760119
step:401 
 cost:36.46156881394441
step:402 
 cost:36.383034630810236
step:403 
 cost:36.30488381518523
step:404 
 cost:36.22711439436935
step:405 
 cost:36.14972440592096
step:406 
 cost:36.07271189760218
step:407 
 cost:35.99607492732449
step:408 
 cost:35.919811563094825
step:409 
 cost:35.843919882961856
step:410 
 cost:35.76839797496269
step:411 
 cost:35.693243937069894
step:412 
 cost:35.61845587713879
step:413 
 cost:35.54403191285513
step:414 
 cost:35.469970171683016
step:415 
 cost:35.39626879081325
step:416 
 cost:35.32292591711185
step:417 
 cost:35.24993970706898
step:418 
 cost:35.17730832674812
step:419 
 cost:35.10502995173559
step:420 
 cost:35.03310276709031
step:421 
 cost:34.96152496729392
step:422 
 cost:34.8902947562011
step:423 
 cost:34.81941034699031
step:424 
 cost:34.74886996211466
step:425 
 cost:34.678671833253155
step:426 
 cost:34.60881420126228
step:427 
 cost:34.539295316127685
step:428 
 cost:34.470113436916314
step:429 
 cost:34.4012668317287
step:430 
 cost:34.332753777651604
step:431 
 cost:34.26457256071084
step:432 
 cost:34.196721475824475
step:433 
 cost:34.129198826756166
step:434 
 cost:34.062002926068864
step:435 
 cost:33.99513209507869
step:436 
 cost:33.928584663809175
step:437 
 cost:33.862358970945614
step:438 
 cost:33.79645336378981
step:439 
 cost:33.73086619821496
step:440 
 cost:33.665595838620895
step:441 
 cost:33.60064065788943
step:442 
 cost:33.53599903734012
step:443 
 cost:33.47166936668609
step:444 
 cost:33.40765004399029
step:445 
 cost:33.34393947562179
step:446 
 cost:33.28053607621249
step:447 
 cost:33.21743826861397
step:448 
 cost:33.15464448385456
step:449 
 cost:33.09215316109672
step:450 
 cost:33.02996274759461
step:451 
 cost:32.96807169865183
step:452 
 cost:32.906478477579526
step:453 
 cost:32.845181555654584
step:454 
 cost:32.7841794120781
step:455 
 cost:32.72347053393416
step:456 
 cost:32.66305341614865
step:457 
 cost:32.602926561448484
step:458 
 cost:32.54308848032091
step:459 
 cost:32.48353769097314
step:460 
 cost:32.424272719292084
step:461 
 cost:32.365292098804396
step:462 
 cost:32.30659437063672
step:463 
 cost:32.24817808347605
step:464 
 cost:32.190041793530455
step:465 
 cost:32.13218406448988
step:466 
 cost:32.07460346748722
step:467 
 cost:32.01729858105961
step:468 
 cost:31.960267991109866
step:469 
 cost:31.903510290868187
step:470 
 cost:31.84702408085403
step:471 
 cost:31.79080796883821
step:472 
 cost:31.734860569805114
step:473 
 cost:31.679180505915305
step:474 
 cost:31.623766406468107
step:475 
 cost:31.56861690786448
step:476 
 cost:31.513730653570185
step:477 
 cost:31.459106294078957
step:478 
 cost:31.404742486876014
step:479 
 cost:31.350637896401686
step:480 
 cost:31.29679119401532
step:481 
 cost:31.243201057959233
step:482 
 cost:31.189866173323008
step:483 
 cost:31.136785232007846
step:484 
 cost:31.083956932691233
step:485 
 cost:31.031379980791677
step:486 
 cost:30.979053088433698
step:487 
 cost:30.926974974412992
step:488 
 cost:30.875144364161727
step:489 
 cost:30.823559989714127
step:490 
 cost:30.772220589672123
step:491 
 cost:30.721124909171248
step:492 
 cost:30.6702716998467
step:493 
 cost:30.619659719799575
step:494 
 cost:30.56928773356329
step:495 
 cost:30.519154512070145
step:496 
 cost:30.469258832618127
step:497 
 cost:30.41959947883779
step:498 
 cost:30.370175240659453
step:499 
 cost:30.32098491428037
step:500 
 cost:30.2720273021323
step:501 
 cost:30.22330121284905
step:502 
 cost:30.174805461234275
step:503 
 cost:30.12653886822948
step:504 
 cost:30.078500260882116
step:505 
 cost:30.030688472313884
step:506 
 cost:29.983102341689193
step:507 
 cost:29.935740714183783
step:508 
 cost:29.888602440953502
step:509 
 cost:29.841686379103297
step:510 
 cost:29.79499139165628
step:511 
 cost:29.748516347523026
step:512 
 cost:29.702260121471003
step:513 
 cost:29.656221594094152
step:514 
 cost:29.61039965178269
step:515 
 cost:29.56479318669293
step:516 
 cost:29.519401096717438
step:517 
 cost:29.4742222854552
step:518 
 cost:29.429255662182005
step:519 
 cost:29.384500141821004
step:520 
 cost:29.339954644913373
step:521 
 cost:29.29561809758915
step:522 
 cost:29.251489431538236
step:523 
 cost:29.20756758398153
step:524 
 cost:29.163851497642195
step:525 
 cost:29.120340120717163
step:526 
 cost:29.077032406848666
step:527 
 cost:29.033927315095976
step:528 
 cost:28.99102380990731
step:529 
 cost:28.948320861091872
step:530 
 cost:28.905817443791967
step:531 
 cost:28.863512538455417
step:532 
 cost:28.82140513080793
step:533 
 cost:28.779494211825764
step:534 
 cost:28.73777877770846
step:535 
 cost:28.696257829851746
step:536 
 cost:28.65493037482054
step:537 
 cost:28.613795424322156
step:538 
 cost:28.572851995179597
step:539 
 cost:28.53209910930502
step:540 
 cost:28.491535793673307
step:541 
 cost:28.451161080295808
step:542 
 cost:28.410974006194188
step:543 
 cost:28.37097361337445
step:544 
 cost:28.331158948801026
step:545 
 cost:28.291529064371126
step:546 
 cost:28.252083016889024
step:547 
 cost:28.21281986804071
step:548 
 cost:28.17373868436847
step:549 
 cost:28.13483853724573
step:550 
 cost:28.096118502852
step:551 
 cost:28.057577662147864
step:552 
 cost:28.019215100850257
step:553 
 cost:27.981029909407724
step:554 
 cost:27.94302118297589
step:555 
 cost:27.905188021393027
step:556 
 cost:27.867529529155778
step:557 
 cost:27.83004481539495
step:558 
 cost:27.79273299385148
step:559 
 cost:27.755593182852532
step:560 
 cost:27.718624505287693
step:561 
 cost:27.681826088585265
step:562 
 cost:27.645197064688755
step:563 
 cost:27.608736570033443
step:564 
 cost:27.572443745523042
step:565 
 cost:27.53631773650656
step:566 
 cost:27.500357692755188
step:567 
 cost:27.464562768439393
step:568 
 cost:27.428932122106072
step:569 
 cost:27.39346491665584
step:570 
 cost:27.358160319320454
step:571 
 cost:27.323017501640336
step:572 
 cost:27.288035639442207
step:573 
 cost:27.253213912816875
step:574 
 cost:27.218551506097057
step:575 
 cost:27.184047607835453
step:576 
 cost:27.14970141078276
step:577 
 cost:27.115512111865957
step:578 
 cost:27.081478912166606
step:579 
 cost:27.047601016899307
step:580 
 cost:27.01387763539024
step:581 
 cost:26.980307981055873
step:582 
 cost:26.94689127138167
step:583 
 cost:26.913626727901057
step:584 
 cost:26.88051357617437
step:585 
 cost:26.84755104576796
step:586 
 cost:26.81473837023347
step:587 
 cost:26.782074787087065
step:588 
 cost:26.749559537788944
step:589 
 cost:26.717191867722835
step:590 
 cost:26.68497102617565
step:591 
 cost:26.652896266317235
step:592 
 cost:26.620966845180234
step:593 
 cost:26.589182023640028
step:594 
 cost:26.55754106639482
step:595 
 cost:26.52604324194579
step:596 
 cost:26.49468782257735
step:597 
 cost:26.463474084337573
step:598 
 cost:26.43240130701859
step:599 
 cost:26.401468774137225
step:600 
 cost:26.370675772915654
step:601 
 cost:26.34002159426217
step:602 
 cost:26.309505532752066
step:603 
 cost:26.279126886608623
step:604 
 cost:26.248884957684172
step:605 
 cost:26.218779051441278
step:606 
 cost:26.188808476933993
step:607 
 cost:26.158972546789236
step:608 
 cost:26.129270577188265
step:609 
 cost:26.09970188784823
step:610 
 cost:26.070265802003828
step:611 
 cost:26.040961646389043
step:612 
 cost:26.011788751219036
step:613 
 cost:25.98274645017203
step:614 
 cost:25.953834080371376
step:615 
 cost:25.925050982367697
step:616 
 cost:25.896396500121057
step:617 
 cost:25.86786998098333
step:618 
 cost:25.839470775680564
step:619 
 cost:25.811198238295507
step:620 
 cost:25.78305172625017
step:621 
 cost:25.755030600288528
step:622 
 cost:25.727134224459252
step:623 
 cost:25.699361966098607
step:624 
 cost:25.67171319581339
step:625 
 cost:25.64418728746392
step:626 
 cost:25.61678361814722
step:627 
 cost:25.5895015681802
step:628 
 cost:25.562340521082945
step:629 
 cost:25.535299863562113
step:630 
 cost:25.50837898549441
step:631 
 cost:25.481577279910134
step:632 
 cost:25.454894142976812
step:633 
 cost:25.428328973982953
step:634 
 cost:25.401881175321826
step:635 
 cost:25.375550152475373
step:636 
 cost:25.349335313998186
step:637 
 cost:25.32323607150156
step:638 
 cost:25.297251839637674
step:639 
 cost:25.271382036083736
step:640 
 cost:25.24562608152638
step:641 
 cost:25.219983399646026
step:642 
 cost:25.194453417101315
step:643 
 cost:25.169035563513706
step:644 
 cost:25.1437292714521
step:645 
 cost:25.118533976417535
step:646 
 cost:25.093449116827973
step:647 
 cost:25.068474134003218
step:648 
 cost:25.04360847214979
step:649 
 cost:25.01885157834602
step:650 
 cost:24.994202902527103
step:651 
 cost:24.969661897470324
step:652 
 cost:24.945228018780274
step:653 
 cost:24.920900724874222
step:654 
 cost:24.89667947696751
step:655 
 cost:24.872563739059025
step:656 
 cost:24.84855297791678
step:657 
 cost:24.824646663063564
step:658 
 cost:24.80084426676262
step:659 
 cost:24.777145264003458
step:660 
 cost:24.753549132487702
step:661 
 cost:24.730055352615025
step:662 
 cost:24.70666340746916
step:663 
 cost:24.683372782803968
step:664 
 cost:24.660182967029616
step:665 
 cost:24.637093451198748
step:666 
 cost:24.614103728992855
step:667 
 cost:24.591213296708553
step:668 
 cost:24.568421653244087
step:669 
 cost:24.545728300085827
step:670 
 cost:24.523132741294813
step:671 
 cost:24.500634483493425
step:672 
 cost:24.478233035852096
step:673 
 cost:24.4559279100761
step:674 
 cost:24.43371862039241
step:675 
 cost:24.41160468353658
step:676 
 cost:24.389585618739815
step:677 
 cost:24.367660947715926
step:678 
 cost:24.345830194648546
step:679 
 cost:24.324092886178267
step:680 
 cost:24.302448551389908
step:681 
 cost:24.280896721799856
step:682 
 cost:24.259436931343437
step:683 
 cost:24.23806871636238
step:684 
 cost:24.216791615592324
step:685 
 cost:24.19560517015043
step:686 
 cost:24.174508923522993
step:687 
 cost:24.153502421553203
step:688 
 cost:24.13258521242887
step:689 
 cost:24.111756846670303
step:690 
 cost:24.091016877118197
step:691 
 cost:24.070364858921604
step:692 
 cost:24.04980034952596
step:693 
 cost:24.02932290866118
step:694 
 cost:24.008932098329808
step:695 
 cost:23.988627482795234
step:696 
 cost:23.968408628569957
step:697 
 cost:23.948275104403944
step:698 
 cost:23.928226481273015
step:699 
 cost:23.90826233236729
step:700 
 cost:23.888382233079728
step:701 
 cost:23.86858576099469
step:702 
 cost:23.848872495876567
step:703 
 cost:23.829242019658505
step:704 
 cost:23.809693916431126
step:705 
 cost:23.790227772431354
step:706 
 cost:23.77084317603129
step:707 
 cost:23.751539717727127
step:708 
 cost:23.732316990128158
step:709 
 cost:23.713174587945787
step:710 
 cost:23.69411210798265
step:711 
 cost:23.675129149121783
step:712 
 cost:23.65622531231579
step:713 
 cost:23.637400200576156
step:714 
 cost:23.618653418962563
step:715 
 cost:23.599984574572243
step:716 
 cost:23.581393276529433
step:717 
 cost:23.562879135974864
step:718 
 cost:23.544441766055318
step:719 
 cost:23.526080781913183
step:720 
 cost:23.507795800676153
step:721 
 cost:23.489586441446924
step:722 
 cost:23.471452325292915
step:723 
 cost:23.45339307523612
step:724 
 cost:23.435408316242974
step:725 
 cost:23.417497675214253
step:726 
 cost:23.39966078097505
step:727 
 cost:23.381897264264808
step:728 
 cost:23.36420675772736
step:729 
 cost:23.346588895901107
step:730 
 cost:23.329043315209155
step:731 
 cost:23.311569653949547
step:732 
 cost:23.29416755228558
step:733 
 cost:23.276836652236078
step:734 
 cost:23.259576597665802
step:735 
 cost:23.242387034275875
step:736 
 cost:23.22526760959427
step:737 
 cost:23.20821797296633
step:738 
 cost:23.19123777554532
step:739 
 cost:23.174326670283122
step:740 
 cost:23.157484311920822
step:741 
 cost:23.140710356979508
step:742 
 cost:23.124004463751
step:743 
 cost:23.10736629228868
step:744 
 cost:23.09079550439838
step:745 
 cost:23.07429176362924
step:746 
 cost:23.05785473526474
step:747 
 cost:23.041484086313666
step:748 
 cost:23.025179485501166
step:749 
 cost:23.00894060325988
step:750 
 cost:22.992767111721044
step:751 
 cost:22.976658684705722
step:752 
 cost:22.96061499771604
step:753 
 cost:22.94463572792645
step:754 
 cost:22.928720554175076
step:755 
 cost:22.912869156955097
step:756 
 cost:22.89708121840614
step:757 
 cost:22.881356422305775
step:758 
 cost:22.86569445406101
step:759 
 cost:22.850095000699838
step:760 
 cost:22.834557750862846
step:761 
 cost:22.81908239479485
step:762 
 cost:22.803668624336566
step:763 
 cost:22.78831613291638
step:764 
 cost:22.773024615542045
step:765 
 cost:22.757793768792574
step:766 
 cost:22.742623290810037
step:767 
 cost:22.727512881291478
step:768 
 cost:22.71246224148088
step:769 
 cost:22.697471074161083
step:770 
 cost:22.68253908364587
step:771 
 cost:22.66766597577201
step:772 
 cost:22.652851457891337
step:773 
 cost:22.638095238862967
step:774 
 cost:22.62339702904537
step:775 
 cost:22.608756540288727
step:776 
 cost:22.594173485927104
step:777 
 cost:22.579647580770793
step:778 
 cost:22.565178541098685
step:779 
 cost:22.550766084650615
step:780 
 cost:22.5364099306198
step:781 
 cost:22.522109799645328
step:782 
 cost:22.507865413804655
step:783 
 cost:22.493676496606124
step:784 
 cost:22.479542772981596
step:785 
 cost:22.465463969279003
step:786 
 cost:22.45143981325509
step:787 
 cost:22.437470034068053
step:788 
 cost:22.423554362270306
step:789 
 cost:22.40969252980122
step:790 
 cost:22.395884269979984
step:791 
 cost:22.38212931749843
step:792 
 cost:22.36842740841389
step:793 
 cost:22.35477828014217
step:794 
 cost:22.341181671450475
step:795 
 cost:22.32763732245042
step:796 
 cost:22.31414497459106
step:797 
 cost:22.300704370651925
step:798 
 cost:22.287315254736203
step:799 
 cost:22.273977372263804
step:800 
 cost:22.260690469964572
step:801 
 cost:22.247454295871492
step:802 
 cost:22.234268599313918
step:803 
 cost:22.221133130910886
step:804 
 cost:22.208047642564406
step:805 
 cost:22.195011887452836
step:806 
 cost:22.18202562002423
step:807 
 cost:22.1690885959898
step:808 
 cost:22.156200572317353
step:809 
 cost:22.14336130722475
step:810 
 cost:22.130570560173485
step:811 
 cost:22.117828091862204
step:812 
 cost:22.105133664220297
step:813 
 cost:22.09248704040151
step:814 
 cost:22.079887984777653
step:815 
 cost:22.0673362629322
step:816 
 cost:22.054831641654108
step:817 
 cost:22.04237388893149
step:818 
 cost:22.029962773945428
step:819 
 cost:22.01759806706383
step:820 
 cost:22.005279539835225
step:821 
 cost:21.99300696498267
step:822 
 cost:21.980780116397654
step:823 
 cost:21.96859876913407
step:824 
 cost:21.95646269940215
step:825 
 cost:21.944371684562515
step:826 
 cost:21.932325503120182
step:827 
 cost:21.920323934718656
step:828 
 cost:21.908366760134037
step:829 
 cost:21.896453761269093
step:830 
 cost:21.884584721147505
step:831 
 cost:21.872759423908022
step:832 
 cost:21.86097765479866
step:833 
 cost:21.849239200171
step:834 
 cost:21.837543847474425
step:835 
 cost:21.825891385250472
step:836 
 cost:21.814281603127153
step:837 
 cost:21.80271429181333
step:838 
 cost:21.791189243093115
step:839 
 cost:21.779706249820293
step:840 
 cost:21.768265105912786
step:841 
 cost:21.75686560634714
step:842 
 cost:21.74550754715306
step:843 
 cost:21.734190725407903
step:844 
 cost:21.72291493923131
step:845 
 cost:21.71167998777975
step:846 
 cost:21.700485671241196
step:847 
 cost:21.689331790829772
step:848 
 cost:21.678218148780402
step:849 
 cost:21.66714454834356
step:850 
 cost:21.65611079377998
step:851 
 cost:21.645116690355476
step:852 
 cost:21.634162044335653
step:853 
 cost:21.6232466629808
step:854 
 cost:21.612370354540705
step:855 
 cost:21.601532928249537
step:856 
 cost:21.59073419432073
step:857 
 cost:21.579973963941942
step:858 
 cost:21.569252049269974
step:859 
 cost:21.558568263425784
step:860 
 cost:21.547922420489456
step:861 
 cost:21.53731433549527
step:862 
 cost:21.526743824426728
step:863 
 cost:21.516210704211666
step:864 
 cost:21.505714792717317
step:865 
 cost:21.495255908745513
step:866 
 cost:21.484833872027775
step:867 
 cost:21.47444850322054
step:868 
 cost:21.464099623900353
step:869 
 cost:21.453787056559136
step:870 
 cost:21.44351062459938
step:871 
 cost:21.433270152329477
step:872 
 cost:21.423065464959038
step:873 
 cost:21.41289638859419
step:874 
 cost:21.402762750232945
step:875 
 cost:21.39266437776059
step:876 
 cost:21.38260109994509
step:877 
 cost:21.372572746432507
step:878 
 cost:21.362579147742448
step:879 
 cost:21.352620135263574
step:880 
 cost:21.342695541249064
step:881 
 cost:21.332805198812142
step:882 
 cost:21.322948941921645
step:883 
 cost:21.313126605397567
step:884 
 cost:21.30333802490666
step:885 
 cost:21.293583036958076
step:886 
 cost:21.283861478898945
step:887 
 cost:21.27417318891009
step:888 
 cost:21.264518006001683
step:889 
 cost:21.25489577000897
step:890 
 cost:21.245306321587975
step:891 
 cost:21.235749502211256
step:892 
 cost:21.22622515416369
step:893 
 cost:21.216733120538247
step:894 
 cost:21.207273245231843
step:895 
 cost:21.197845372941114
step:896 
 cost:21.188449349158343
step:897 
 cost:21.179085020167292
step:898 
 cost:21.169752233039127
step:899 
 cost:21.16045083562833
step:900 
 cost:21.151180676568654
step:901 
 cost:21.14194160526907
step:902 
 cost:21.132733471909795
step:903 
 cost:21.123556127438235
step:904 
 cost:21.114409423565064
step:905 
 cost:21.105293212760248
step:906 
 cost:21.096207348249138
step:907 
 cost:21.08715168400852
step:908 
 cost:21.07812607476276
step:909 
 cost:21.069130375979917
step:910 
 cost:21.060164443867897
step:911 
 cost:21.051228135370618
step:912 
 cost:21.042321308164205
step:913 
 cost:21.033443820653204
step:914 
 cost:21.024595531966803
step:915 
 cost:21.015776301955086
step:916 
 cost:21.006985991185278
step:917 
 cost:20.99822446093807
step:918 
 cost:20.989491573203914
step:919 
 cost:20.98078719067933
step:920 
 cost:20.97211117676326
step:921 
 cost:20.96346339555345
step:922 
 cost:20.954843711842805
step:923 
 cost:20.94625199111582
step:924 
 cost:20.937688099544964
step:925 
 cost:20.92915190398716
step:926 
 cost:20.920643271980197
step:927 
 cost:20.912162071739253
step:928 
 cost:20.90370817215336
step:929 
 cost:20.89528144278191
step:930 
 cost:20.88688175385121
step:931 
 cost:20.878508976251013
step:932 
 cost:20.87016298153108
step:933 
 cost:20.861843641897796
step:934 
 cost:20.85355083021072
step:935 
 cost:20.845284419979254
step:936 
 cost:20.837044285359248
step:937 
 cost:20.828830301149672
step:938 
 cost:20.82064234278926
step:939 
 cost:20.812480286353246
step:940 
 cost:20.804344008550036
step:941 
 cost:20.796233386717923
step:942 
 cost:20.788148298821863
step:943 
 cost:20.780088623450197
step:944 
 cost:20.77205423981145
step:945 
 cost:20.7640450277311
step:946 
 cost:20.756060867648415
step:947 
 cost:20.748101640613246
step:948 
 cost:20.740167228282868
step:949 
 cost:20.73225751291888
step:950 
 cost:20.724372377384025
step:951 
 cost:20.7165117051391
step:952 
 cost:20.70867538023988
step:953 
 cost:20.700863287333995
step:954 
 cost:20.693075311657932
step:955 
 cost:20.685311339033905
step:956 
 cost:20.677571255866916
step:957 
 cost:20.669854949141662
step:958 
 cost:20.66216230641958
step:959 
 cost:20.654493215835853
step:960 
 cost:20.64684756609643
step:961 
 cost:20.639225246475082
step:962 
 cost:20.63162614681048
step:963 
 cost:20.624050157503245
step:964 
 cost:20.616497169513053
step:965 
 cost:20.608967074355743
step:966 
 cost:20.601459764100444
step:967 
 cost:20.5939751313667
step:968 
 cost:20.586513069321636
step:969 
 cost:20.579073471677123
step:970 
 cost:20.571656232686948
step:971 
 cost:20.564261247144024
step:972 
 cost:20.556888410377603
step:973 
 cost:20.54953761825048
step:974 
 cost:20.542208767156268
step:975 
 cost:20.534901754016616
step:976 
 cost:20.527616476278503
step:977 
 cost:20.520352831911513
step:978 
 cost:20.513110719405123
step:979 
 cost:20.50589003776603
step:980 
 cost:20.49869068651547
step:981 
 cost:20.491512565686552
step:982 
 cost:20.484355575821592
step:983 
 cost:20.47721961796955
step:984 
 cost:20.470104593683303
step:985 
 cost:20.463010405017137
step:986 
 cost:20.4559369545241
step:987 
 cost:20.44888414525343
step:988 
 cost:20.441851880747993
step:989 
 cost:20.43484006504175
step:990 
 cost:20.427848602657175
step:991 
 cost:20.420877398602773
step:992 
 cost:20.413926358370535
step:993 
 cost:20.406995387933453
step:994 
 cost:20.400084393743022
step:995 
 cost:20.39319328272678
step:996 
 cost:20.386321962285837
step:997 
 cost:20.37947034029243
step:998 
 cost:20.372638325087475
step:999 
 cost:20.365825825478172
step:1000 
 cost:20.359032750735558

In [82]:
print(model.weights)


[ -3.17834243  -2.92434162  -1.5453997   -3.18214353   9.55776345
  12.13318755  16.99328664]

Visualizing the Cost per Step

Plotting a cost curve explains to us what is happening in our gradient descent. Whether our model converges or not. It also helps to understand the point after which we need not expend resources to train.


In [83]:
model.plotCostCurve()


Predicting Values

Here we are using our input dataset to predict the Y with our final model. In actual scenarios there is proper process to do this.


In [80]:
model.predict(inputx)


Out[80]:
array([[ 11.87980463],
       [ 10.7592989 ],
       [ 11.10539602],
       [ 11.90193209],
       [ 11.02473457],
       [  8.22177261],
       [  7.20105741],
       [  7.11959491],
       [  7.73344837],
       [  8.19406192],
       [  9.49785751],
       [  8.80854137],
       [  8.89278972],
       [  8.75783646],
       [ 19.16085845],
       [ 17.04790558],
       [ 17.07335849],
       [ 17.55432832],
       [ 19.26475399],
       [ 23.33936215],
       [ 20.53972187],
       [ 18.90156647],
       [ 20.81485781],
       [ 17.55963645],
       [ 16.88585842],
       [ 11.2941102 ],
       [ 12.81779804],
       [ 11.71340955],
       [ 14.76723118],
       [ 20.24382995],
       [ 20.2065926 ],
       [ 19.63317879],
       [ 16.18874088],
       [ 17.18630021],
       [ 16.97135921],
       [ 17.03412774],
       [ 17.23070823],
       [ 11.65207505],
       [ 10.48015115],
       [ 12.64898096],
       [ 12.81338843],
       [ 10.30228653],
       [ 10.59041748],
       [ 10.271445  ],
       [ 15.88186692],
       [ 22.31882017],
       [ 16.69885542],
       [ 16.54190788],
       [ 19.55689225],
       [ 19.69305775],
       [ 23.66242981],
       [ 20.44966117],
       [ 23.70311844],
       [ 23.1819003 ],
       [ 23.34468998],
       [ 24.21840258],
       [ 21.49938474],
       [ 22.79001147],
       [ 26.79965142],
       [ 23.5431881 ],
       [ 22.07368125],
       [ 12.58142342],
       [ 11.82812589],
       [ 14.0710885 ],
       [ 13.33872225],
       [ 13.36877887],
       [ 10.53836054],
       [ 13.36747006],
       [ 13.38511503],
       [ 12.05563952],
       [ 21.25943927],
       [ 13.81739146],
       [ 14.61736561],
       [ 15.7294952 ],
       [ 14.42392145],
       [ 20.22037764],
       [ 22.82878632],
       [ 23.37019234],
       [ 23.41633689],
       [ 21.63592889],
       [ 22.63029544],
       [ 20.61235582],
       [ 21.52076449],
       [ 22.47969972],
       [ 14.27544388],
       [ 14.34785482],
       [ 14.46640945],
       [ 15.98650729],
       [ 14.70712733],
       [ 11.61694321],
       [ 12.83449798],
       [ 14.12123207],
       [ 15.58905172],
       [ 11.27551428],
       [ 10.88518668],
       [ 13.12839043],
       [ 20.00465604],
       [ 20.51083143],
       [ 19.75972939],
       [ 19.8241771 ],
       [ 20.23927628],
       [ 26.49707111],
       [ 13.66057448],
       [ 12.74515181],
       [ 13.74250188],
       [ 13.64418555],
       [ 19.26215427],
       [ 24.86413686],
       [ 24.59078801],
       [ 23.08495081],
       [ 22.42067899],
       [ 24.22584587],
       [ 19.83844293],
       [ 22.69593838],
       [ 14.39449572],
       [ 11.15374241],
       [ 25.99196428],
       [ 22.6024558 ],
       [ 21.32187846],
       [ 21.86610248],
       [ 14.07093035],
       [ 21.1068675 ],
       [ 19.20838774],
       [ 13.35761169],
       [ 21.37533504],
       [ 20.77246709],
       [ 20.82861377],
       [ 26.39659004],
       [ 23.88075546],
       [ 27.82599143],
       [ 23.90916197],
       [ 20.48817112],
       [ 21.08266413],
       [ 20.60733248],
       [ 16.57085555],
       [ 15.80937733],
       [ 15.78289764],
       [ 17.42447347],
       [ 17.34706783],
       [ 24.35169307],
       [ 24.22741992],
       [ 23.08609477],
       [ 25.17520131],
       [ 26.32643641],
       [ 23.31916464],
       [ 23.94909163],
       [ 22.58882629],
       [ 22.89197406],
       [ 23.44143434],
       [ 24.50757411],
       [ 21.58004033],
       [ 21.07912167],
       [ 24.30019355],
       [ 23.58443245],
       [ 14.25793373],
       [ 16.69568475],
       [ 17.34752828],
       [ 16.19801668],
       [ 24.04409171],
       [ 22.28633759],
       [ 22.60368751],
       [ 23.03221861],
       [ 21.00661824],
       [ 18.55721598],
       [ 17.09831049],
       [ 25.09977093],
       [ 24.78595411],
       [ 21.74159753],
       [ 25.7648398 ],
       [ 22.60890433],
       [ 25.47114682],
       [ 25.07471611],
       [ 21.54579789],
       [ 24.15115425],
       [ 22.16639578],
       [ 23.78456406],
       [ 24.77843842],
       [ 23.19755621],
       [ 22.73059646],
       [ 26.46600809],
       [ 25.38096964],
       [ 26.33488481],
       [ 24.48916863],
       [ 27.03664661],
       [ 25.54454801],
       [ 17.81747614],
       [ 17.63685447],
       [ 18.64911346],
       [ 17.06935776],
       [ 22.19513286],
       [ 21.21390986],
       [ 24.10475377],
       [ 23.61201951],
       [ 30.24050821],
       [ 29.88739705],
       [ 25.25361446],
       [ 27.38339192],
       [ 23.29426531],
       [ 25.14957765],
       [ 22.02173766],
       [ 23.30592474],
       [ 24.01328709],
       [ 27.00377548],
       [ 26.33785604],
       [ 23.76271361],
       [ 24.63207593],
       [ 17.95149865],
       [ 28.5409714 ],
       [ 23.33448954],
       [ 23.19980912],
       [ 16.4256846 ],
       [ 16.73545834],
       [ 19.38834822],
       [ 18.58656803],
       [ 28.70852102],
       [ 26.1349914 ],
       [ 29.21426366],
       [ 26.26043306],
       [ 27.89389396],
       [ 18.72683286],
       [ 23.29189823],
       [ 19.10357418],
       [ 19.98059019],
       [ 23.21982783],
       [ 23.85916219],
       [ 24.2894071 ],
       [ 24.8621105 ],
       [ 16.27696116],
       [ 17.17249287],
       [ 16.84015174],
       [ 19.0159233 ],
       [ 26.29873691],
       [ 25.89304627],
       [ 28.34323599],
       [ 25.89399962],
       [ 27.79609566],
       [ 27.02893385],
       [ 27.4750637 ],
       [ 25.86070847],
       [ 23.94988371],
       [ 24.32876811],
       [ 25.68417486],
       [ 31.75577622],
       [ 27.35267304],
       [ 30.59819224],
       [ 29.88779832],
       [ 28.69623171],
       [ 22.64345214],
       [ 20.10157739],
       [ 20.18720079],
       [ 26.1730028 ],
       [ 26.27452661],
       [ 24.9743667 ],
       [ 26.6565928 ],
       [ 25.11303032],
       [ 25.22777294],
       [ 24.19405148],
       [ 25.44926671],
       [ 25.85796105],
       [ 23.34464122],
       [ 20.48584678],
       [ 22.4531505 ],
       [ 19.47936616],
       [ 20.14609937],
       [ 28.36959998],
       [ 26.09012211],
       [ 26.78045966],
       [ 26.96515397],
       [ 26.49470168],
       [ 27.1771542 ],
       [ 27.78174488],
       [ 26.82351476],
       [ 26.44617637],
       [ 23.8115135 ],
       [ 26.93018629],
       [ 24.93410472],
       [ 27.61222051],
       [ 28.44659291],
       [ 24.99454555],
       [ 27.41492781],
       [ 28.67776251],
       [ 26.78169302],
       [ 25.74041256],
       [ 22.55729873],
       [ 21.4529421 ],
       [ 20.50139564],
       [ 22.25936406],
       [ 21.1933272 ],
       [ 21.09023268],
       [ 22.98915753],
       [ 20.23338333],
       [ 28.08579485],
       [ 28.84690174],
       [ 28.19463824],
       [ 27.69587526],
       [ 28.91342193],
       [ 23.19282985],
       [ 33.12215409],
       [ 27.78401113],
       [ 27.18273025],
       [ 28.26974847],
       [ 31.2928259 ],
       [ 28.34249401],
       [ 27.89773221],
       [ 23.69705387],
       [ 24.60379881],
       [ 26.25756705],
       [ 29.19763399],
       [ 32.03179949],
       [ 29.73058822],
       [ 30.53262152],
       [ 29.17914851],
       [ 30.16567631],
       [ 31.15142735],
       [ 28.06914485],
       [ 29.84823264],
       [ 28.75229759],
       [ 30.34539212],
       [ 28.8387195 ],
       [ 29.29037734],
       [ 31.38838489],
       [ 27.6743099 ],
       [ 32.20304828],
       [ 33.76080842],
       [ 34.80339114],
       [ 31.03320301],
       [ 32.15527276],
       [ 28.98757062],
       [ 31.27695932],
       [ 29.95965602],
       [ 24.5005036 ],
       [ 28.3957439 ],
       [ 28.82595943],
       [ 30.40490351],
       [ 30.0322221 ],
       [ 30.15048526],
       [ 28.83671482],
       [ 26.37529518],
       [ 28.38517159],
       [ 32.13535402],
       [ 31.62537256],
       [ 31.60564165],
       [ 32.19385418],
       [ 33.40878885],
       [ 32.01574148],
       [ 31.21708374],
       [ 30.20273839],
       [ 31.21643392],
       [ 33.73629155],
       [ 29.75141639],
       [ 29.83065911],
       [ 31.19149902],
       [ 29.52786404],
       [ 31.7503658 ],
       [ 32.30366629],
       [ 30.83491002],
       [ 26.28368546],
       [ 27.26564751],
       [ 27.0869561 ],
       [ 26.34212522],
       [ 28.63038538],
       [ 27.70596957],
       [ 33.60658497],
       [ 32.96288727],
       [ 32.78016919],
       [ 31.5425318 ],
       [ 31.16959806],
       [ 32.01907512],
       [ 31.0648497 ],
       [ 31.56976411],
       [ 33.522785  ],
       [ 33.19470939],
       [ 31.12728365],
       [ 32.79537329],
       [ 30.69940341],
       [ 30.87525239],
       [ 32.33014313],
       [ 31.59804855],
       [ 32.02989347],
       [ 32.31540293],
       [ 29.4290379 ],
       [ 28.80745142],
       [ 29.90425929],
       [ 27.81145717],
       [ 29.6108541 ],
       [ 29.43741526],
       [ 31.42274668],
       [ 30.64974684],
       [ 37.37090805],
       [ 28.6311034 ],
       [ 32.90462169],
       [ 33.32761755]])